/**
 * Copyright (c) 2018-2099, Chill Zhuang 庄骞 (bladejava@qq.com).
 * <p>
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * <p>
 * http://www.apache.org/licenses/LICENSE-2.0
 * <p>
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.springblade.modules.restaurant.entity;

import com.baomidou.mybatisplus.annotation.SqlCondition;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.mp.base.TenantEntity;

import java.io.Serial;

/**
 * 客情信息实体类
 *
 * @author Blade
 * @since 2025-01-21
 */
@Data
@TableName("restaurant_customer_situation")
@EqualsAndHashCode(callSuper = true)
@Schema(description = "客情信息")
public class CustomerSituation extends TenantEntity {

	@Serial
	private static final long serialVersionUID = 1L;
	/**
	 * 区域ID
	 */
	@Schema(description = "区域ID")
	@JsonSerialize(using = ToStringSerializer.class)
	private Long areaId;
	/**
	 * 区域名称
	 */
	@Schema(description = "区域名称")
	private String areaName;
	/**
	 * 房间ID
	 */
	@Schema(description = "房间ID")
	@JsonSerialize(using = ToStringSerializer.class)
	private Long roomId;
	/**
	 * 房间名称
	 */
	@Schema(description = "房间名称")
	private String roomName;

	/**
	 * 填单日期
	 */
	@Schema(description = "填单日期")
	private String writeDate;
	/**
	 * 类型(0午市 1晚市)
	 */
	@Schema(description = "类型(0午市 1晚市)")
	private String timeSlot;
	/**
	 * 菜品
	 */
	@Schema(description = "菜品")
	private String items;
	/**
	 * 代订人
	 */
	@Schema(description = "代订人")
	private String booker;
	/**
	 * 看台服务员
	 */
	@Schema(description = "看台服务员")
	private String standAttendant;
	/**
	 * 点菜人
	 */
	@Schema(description = "点菜人")
	private String orderingPeople;
	/**
	 * 用餐人数
	 */
	@Schema(description = "用餐人数")
	private String eatNum;
	/**
	 * 贵宾姓名
	 */
	@Schema(description = "贵宾姓名")
	@TableField(condition = SqlCondition.ORACLE_LIKE)
	private String guestName;
	/**
	 * 性别
	 */
	@Schema(description = "性别")
	private Integer sex;
	/**
	 * 单位/电话
	 */
	@Schema(description = "单位/电话")
	@TableField(condition = SqlCondition.ORACLE_LIKE)
	private String contact;
	/**
	 * 宴请性质: 1 商务宴请，2 家庭聚餐，3 朋友聚餐，4 生日宴会，5 其他
	 */
	@Schema(description = "宴请性质: 1 商务宴请，2 家庭聚餐，3 朋友聚餐，4 生日宴会，5 其他")
	private Integer entertain;
	/**
	 * 客到时间
	 */
	@Schema(description = "客到时间")
	private String arrivalTime;
	/**
	 * 客走时间
	 */
	@Schema(description = "客走时间")
	private String departureTime;
	/**
	 * 客人类型
	 */
	@Schema(description = "客人类型")
	private Integer guestType;
	/**
	 * 折扣
	 */
	@Schema(description = "折扣")
	private String discount;
	/**
	 * 消费金额
	 */
	@Schema(description = "消费金额")
	private String amount;
	/**
	 * 餐前准备是否安排(0否 1是)
	 */
	@Schema(description = "餐前准备是否安排(0否 1是)")
	private Integer preparation;
	/**
	 * 结账方式(1 刷卡 2现金 3 挂账 4 支票)
	 */
	@Schema(description = "结账方式(1 刷卡 2现金 3 挂账 4 支票)")
	private Integer paymentMethod;
	/**
	 * 上第一道菜时间
	 */
	@Schema(description = "上第一道菜时间")
	private String firstDishTime;
	/**
	 * 上齐时间
	 */
	@Schema(description = "上齐时间")
	private String servingTime;
	/**
	 * 上菜程序（1 按程序上菜 2加快 3 分餐位上 4 慢点）
	 */
	@Schema(description = "上菜程序（1 按程序上菜 2加快 3 分餐位上 4 慢点）")
	private Integer servingProgram;
	/**
	 * 禁忌、喜好
	 */
	@Schema(description = "禁忌、喜好")
	private String preference;
	/**
	 * 意见
	 */
	@Schema(description = "意见")
	private String comments;
	/**
	 * 结账贵宾
	 */
	@Schema(description = "结账贵宾")
	private String billingGuest;
	/**
	 * 发票抬头
	 */
	@Schema(description = "发票抬头")
	private String invoiceTitle;


}
